const express = require('express')

const app = express()

// 中间件： 处理请求，不知就是个函数
// 在 Express中， 对中间件又集中分类

// 1. 不关心请求路径和请求方法的中间件
// 中间件本身是个方法接收三个参数
// Request 请求对象
// Response 响应对象
// next 下一个中间件

// 当一个请求进入中间件之后，会停留在当前中间件，
// next是个方法，调用下一个中间件

app.use((req, res, next) => {
    console.log('1')
    // 不调next默认不会走后面的中间件
    next()
})

// app.use((req, res, next) => {
//     console.log('2')
//     next()
// })

// app.use((req, res) => {
//     console.log('3')
//     res.send('333 end..')
// })



// 2. 关心请求路径的中间件
// 以 /xxx开头的路径中间件

// 调用next方法也是需要匹配的 
// 如果没有匹配中间件，get 输入Cannot get/ Cannot post 
// app.use('/a', (req, res, next) => {
//     console.log(req.url)  // 打出来 / 不包含/a 
// })




// 3. 严格匹配请求方法和请求路径的中间件
app.get('/', (req, res, next) =>  {
    console.log('1')
    next()
})

app.get('/', (req, res, next) =>  {
    console.log('2')
})


// 请求/ 会打出 1 2 不会覆盖


app.listen(3000, () => {
    console.log('app is running at port 3000')
})